<ui:composition xmlns="http://www.w3.org/1999/xhtml"
                xmlns:ui="http://java.sun.com/jsf/facelets"
                template="/masterLayout.xhtml"
                xmlns:h="http://java.sun.com/jsf/html"
                xmlns:p="http://primefaces.prime.com.tr/ui"
                xmlns:f="http://java.sun.com/jsf/core"
                xmlns:componentes="http://java.sun.com/jsf/composite/componentes"
                xmlns:c="http://java.sun.com/jsp/jstl/core">

    <ui:define name="titulo_ventana">Artículos del Proveedor</ui:define>
    <ui:define name="titulo_pagina">Artículos del Proveedor</ui:define>
    <ui:define name="pagina">
        <h:form prependId="false" style="margin-bottom: 0.7em;">
            <componentes:datosProveedores proveedor="#{generico.proveedorSeleccionado}"
                                          mostrarDireccion="false"
                                          mostrarEmail="false"
                                          mostrarObservaciones="false"
                                          mostrarTelefono="false"
                                          mostrarTiempoEntrega="false"/>
        </h:form>
        <h:form prependId="false">
            <p:dataTable id="listadoArticulosProveedor"
                         var="fila"
                         value="#{vistaArticuloProveedor.devolverArticulosProveedor(generico.proveedorSeleccionado)}"
                         paginator="true"
                         dynamic="true"
                         lazy="true"
                         rows="5"
                         nextPageLinkLabel="Siguiente >"
                         lastPageLinkLabel="Último >>"
                         previousPageLinkLabel="&lt; Anterior"
                         firstPageLinkLabel="&lt;&lt; Primero"
                         emptyMessage="No hay registros cargados"
                         errorMessage="Hubo un error cargando los datos"
                         loadingMessage="Cargando..."
                         >
                <p:column filterBy="#{fila.articulo.tipo}" sortBy="#{fila.articulo.tipo}" filterMatchMode="contains">
                    <f:facet name="header">
                        Tipo
                    </f:facet>
                    #{fila.articulo.tipo}
                </p:column>
                <p:column filterBy="#{fila.articulo.nombre}" sortBy="#{fila.articulo.nombre}" filterMatchMode="contains">
                    <f:facet name="header">
                        Nombre
                    </f:facet>
                    #{fila.articulo.nombre}
                </p:column>
                <p:column sortBy="#{fila.precio}">
                    <f:facet name="header">
                        Precio
                    </f:facet>
                    <h:outputText value="#{fila.precio}" >
                        <f:convertNumber currencySymbol="$" type="currency" />
                    </h:outputText>
                </p:column>
                <p:column>
                    <f:facet name="header">
                        Acción
                    </f:facet>
                    <p:commandButton value="Editar" 
                                     process="@this"
                                     action="#{vistaArticuloProveedor.setArticuloPrecioProveedorSeleccionado(fila)}"
                                     update="panelEditar#{fila.articulo.tipo}"
                                     onsuccess="dialogoEditar#{fila.articulo.tipo}.show();"/>
                    <p:commandButton value="Quitar"
                                     process="@this"
                                     action="#{vistaArticuloProveedor.quitarArticuloProveedor(fila)}"
                                     onsuccess="location.reload(true);"/>
                </p:column>
            </p:dataTable>
            <h:panelGroup layout="block" styleClass="botonesBottom">
                <p:commandButton value="Agregar Insumo"
                                 process="@this"
                                 action="#{vistaArticuloProveedor.agregarArticulo(generico.proveedorSeleccionado)}"
                                 update="panelSeleccionarInsumo"
                                 onsuccess="dialogoSeleccionarInsumo.show();"/>
                <p:commandButton value="Agregar Madera"
                                 process="@this"
                                 action="#{vistaArticuloProveedor.agregarArticulo(generico.proveedorSeleccionado)}"
                                 update="panelSeleccionarMadera"
                                 onsuccess="dialogoSeleccionarMadera.show();"/>
                <p:commandButton value="Volver" ajax="false" action="/compras/Proveedores/Articulos/verListado?faces-redirect=true"/>
            </h:panelGroup>
        </h:form>
        <p:dialog widgetVar="dialogoEditarInsumo" width="320" resizable="false" modal="true" closeOnEscape="true">
            <h:form prependId="false" style="width: 300px; min-width: 300px;">
                <h:panelGroup id="panelEditarInsumo">
                    <h:outputLabel style="width: 130px;" for="precioInsumo">Precio:</h:outputLabel>
                    <h:inputText id="precioInsumo" value="#{vistaArticuloProveedor.precio}" style="width: 70px;"/><br/>
                    <h:panelGroup layout="block" styleClass="botonesBottom">
                        <p:commandButton value="Cancelar"
                                         onclick="dialogoEditarInsumo.hide(); return false;"/>
                        <p:commandButton value="Actualizar"
                                         process="panelEditarInsumo"
                                         action="#{vistaArticuloProveedor.actualizarInsumoArticuloProveedorSeleccionado()}"
                                         update="listadoArticulosProveedor"
                                         onsuccess="dialogoEditarInsumo.hide()"/>
                    </h:panelGroup>
                </h:panelGroup>
            </h:form>
        </p:dialog>
        <p:dialog widgetVar="dialogoSeleccionarInsumo" width="870" resizable="false" modal="true" closeOnEscape="true">
            <h:form prependId="false">
                <h:panelGroup id="panelSeleccionarInsumo">
                    <h:panelGroup layout="block" style="margin-bottom: 0.7em;">
                        A continuación seleccione el Insumo a agregar (se listarán solo aquellos que el Proveedor no provee):
                    </h:panelGroup>
                    <p:dataTable id="listadoInsumosAAgregar"
                                 value="#{vistaArticuloProveedor.devolverInsumosNoProveidos(generico.proveedorSeleccionado)}"
                                 var="fila"
                                 paginator="true"
                                 dynamic="true"
                                 lazy="true"
                                 rows="5"
                                 selectionMode="single"
                                 selection="#{vistaArticuloProveedor.articuloAAgregarSeleccionado}"
                                 nextPageLinkLabel="Siguiente >"
                                 lastPageLinkLabel="Último >>"
                                 previousPageLinkLabel="&lt; Anterior"
                                 firstPageLinkLabel="&lt;&lt; Primero"
                                 emptyMessage="No hay registros cargados"
                                 errorMessage="Hubo un error cargando los datos"
                                 loadingMessage="Cargando...">
                        <p:column filterBy="#{fila.nombre}" filterMatchMode="contains" sortBy="#{fila.nombre}">
                            <f:facet name="header">
                                Nombre
                            </f:facet>
                            #{fila.nombre}
                        </p:column>
                        <p:column filterBy="#{fila.descripcion}" filterMatchMode="contains">
                            <f:facet name="header">
                                Descripción
                            </f:facet>
                            #{fila.descripcion}
                        </p:column>
                    </p:dataTable><br/>
                    <h:panelGroup layout="block" styleClass="botonesBottom">
                        <p:commandButton value="Cancelar"
                                         process="@none"
                                         onclick="dialogoSeleccionarInsumo.hide(); return false;"/>
                        <p:commandButton value="Siguiente"
                                         process="listadoInsumosAAgregar"
                                         onsuccess="dialogoSeleccionarInsumo.hide();dialogoSetearPrecioNuevoInsumo.show();"/>
                    </h:panelGroup>
                </h:panelGroup>
            </h:form>
        </p:dialog>
        <p:dialog widgetVar="dialogoSetearPrecioNuevoInsumo" width="330" resizable="false" modal="true" closeOnEscape="true">
            <h:form prependId="false" style="width: 300px; min-width: 300px;">
                <h:panelGroup id="panelDialogoSetearPrecioNuevoInsumo">
                    <h:outputLabel style="width: 110px;" for="precio">Precio:</h:outputLabel>
                    <h:inputText id="precio" value="#{vistaArticuloProveedor.precio}" /><br/>
                    <h:panelGroup layout="block" styleClass="botonesBottom">
                        <p:commandButton value="Cancelar"
                                         onclick="dialogoEditarInsumo.hide(); return false;"/>
                        <p:commandButton value="Aceptar"
                                         process="panelDialogoSetearPrecioNuevoInsumo"
                                         action="#{vistaArticuloProveedor.crearArticuloProveedorSeleccionado()}"
                                         update="listadoArticulosProveedor"
                                         onsuccess="dialogoSetearPrecioNuevoInsumo.hide()"/>
                    </h:panelGroup>
                </h:panelGroup>
            </h:form>
        </p:dialog>
        <p:dialog widgetVar="dialogoEditarMadera" width="380" resizable="false" modal="true" closeOnEscape="true">
            <h:form prependId="false" style="width: 350px; min-width: 300px;">
                <h:panelGroup id="panelEditarMadera">
                    <h:outputLabel style="width: 130px;" for="tipoMaderaSeleccionadaEditar">Tipo de madera:</h:outputLabel>
                    <h:outputLabel id="tipoMaderaSeleccionadaEditar" style="text-align: left; margin:5px 0 0 10px;">#{vistaArticuloProveedor.tipoMaderaSeleccionada}</h:outputLabel><br/>
                    <h:outputLabel style="width: 130px;" for="precioTipoMaderaEditar">Precio Pié Cúbico:</h:outputLabel>
                    <h:inputText id="precioTipoMaderaEditar" value="#{vistaArticuloProveedor.maderaTipoPrecioProveedorSeleccionado.precioPieCubico}" /><br/>
                    <h:panelGroup layout="block" styleClass="botonesBottom">
                        <p:commandButton value="Cancelar"
                                         onclick="dialogoEditarMadera.hide(); return false;"/>
                        <p:commandButton value="Actualizar"
                                         process="@this precioTipoMaderaEditar"
                                         action="#{vistaArticuloProveedor.actualizarMaderaArticuloProveedorSeleccionado()}"
                                         update="listadoArticulosProveedor"
                                         onsuccess="dialogoEditarMadera.hide(); location.reload(true);"/>
                    </h:panelGroup>
                </h:panelGroup>
            </h:form>
        </p:dialog>
        <p:dialog widgetVar="dialogoSeleccionarMadera" width="870" resizable="false" modal="true" closeOnEscape="true">
            <h:form prependId="false">
                <h:panelGroup id="panelSeleccionarMadera">
                    <h:panelGroup layout="block" style="margin-bottom: 0.7em;">
                        A continuación seleccione la Madera a agregar (se listarán solo aquellos que el Proveedor no provee):
                    </h:panelGroup>
                    <p:dataTable id="listadoMaderasAAgregar"
                                 value="#{vistaArticuloProveedor.devolverMaderasNoProveidas(generico.proveedorSeleccionado)}"
                                 var="fila"
                                 paginator="true"
                                 dynamic="true"
                                 lazy="true"
                                 rows="5"
                                 selectionMode="single"
                                 selection="#{vistaArticuloProveedor.articuloAAgregarSeleccionado}"
                                 nextPageLinkLabel="Siguiente >"
                                 lastPageLinkLabel="Último >>"
                                 previousPageLinkLabel="&lt; Anterior"
                                 firstPageLinkLabel="&lt;&lt; Primero"
                                 emptyMessage="No hay registros cargados"
                                 errorMessage="Hubo un error cargando los datos"
                                 loadingMessage="Cargando...">
                        <p:column filterBy="#{fila.maderaTipo.nombre}" filterMatchMode="contains" sortBy="#{fila.maderaTipo.nombre}">
                            <f:facet name="header">
                                Tipo
                            </f:facet>
                            #{fila.maderaTipo.nombre}
                        </p:column>
                        <p:column filterBy="#{fila.nombre}" filterMatchMode="contains" sortBy="#{fila.nombre}">
                            <f:facet name="header">
                                Medidas
                            </f:facet>
                            #{fila.nombre}
                        </p:column>
                        <p:column sortBy="#{fila.calcularPiesCubicos()}">
                            <f:facet name="header">
                                Pies Cúbicos
                            </f:facet>
                            #{fila.calcularPiesCubicos()}
                        </p:column>
                    </p:dataTable><br/>
                    <h:panelGroup layout="block" styleClass="botonesBottom">
                        <p:commandButton value="Cancelar"
                                         process="@none"
                                         onclick="dialogoSeleccionarMadera.hide(); return false;"/>
                        <p:commandButton value="Agregar"
                                         process="@this listadoMaderasAAgregar"
                                         action="#{vistaArticuloProveedor.comprobarPrecioMaderaTipoProveedor(generico.proveedorSeleccionado)}"
                                         update="panelAgregarMadera accionCondicional"
                                         onsuccess="dialogoSeleccionarMadera.hide();"/>
                        <h:panelGroup id="accionCondicional">
                            <h:outputText value="#{vistaArticuloProveedor.accionDespuesAgregarMadera()}" escape="false" />
                        </h:panelGroup>
                    </h:panelGroup>
                </h:panelGroup>
            </h:form>
        </p:dialog>
        <p:dialog widgetVar="dialogoSetearPrecioNuevaMadera" width="330" resizable="false" modal="true" closeOnEscape="true">
            <h:form prependId="false" style="width: 300px; min-width: 300px;">
                <h:panelGroup id="panelAgregarMadera">
                    <p>El precio del Pié Cúbico de este Tipo de Madera no existe. A continuación indique el precio de este Tipo de Madera:</p>
                    <h:outputLabel style="width: 130px;" for="tipoMaderaSeleccionadaAgregar">Tipo de madera:</h:outputLabel>
                    <h:outputLabel id="tipoMaderaSeleccionadaAgregar" style="text-align: left; margin:5px 0 0 10px;">#{vistaArticuloProveedor.tipoMaderaSeleccionada}</h:outputLabel><br/>
                    <h:outputLabel style="width: 130px;" for="precioTipoMaderaAgregar">Precio Pié Cúbico:</h:outputLabel>
                    <h:inputText id="precioTipoMaderaAgregar" styleClass="camposPrecio" value="#{vistaArticuloProveedor.precio}" /><br/>
                    <h:panelGroup layout="block" styleClass="botonesBottom">
                        <p:commandButton value="Cancelar"
                                         onclick="dialogoEditarMadera.hide(); return false;"/>
                        <p:commandButton value="Guardar Precio Pié Cúbico"
                                         process="@this precioTipoMaderaAgregar"
                                         action="#{vistaArticuloProveedor.crearArticuloProveedorSeleccionado()}"
                                         update="listadoArticulosProveedor"
                                         onsuccess="dialogoEditarMadera.hide(); location.reload(true);"/>
                    </h:panelGroup>
                </h:panelGroup>
            </h:form>
        </p:dialog>
    </ui:define>
</ui:composition>


